package com.interview.function;

public class ArgsDemo2 {
    public static void main(String[] args) {
        // 定义数组
        int[] arr = { 1, 2, 3, 4, 5 };//画的下面栈到堆的数据地址的线
        // 遍历数组
        for (int x = 0; x < arr.length; x++) {
            System.out.println(arr[x]);//arr[0]=1,arr[1]=2,arr[2]=3,arr[3]=4,arr[4]=5
        }
        System.out.println("----------------");
        change(arr);//执行完毕栈中的change(int[] arr)出栈
        for (int x = 0; x < arr.length; x++) {
            System.out.println(arr[x]);//打印时按着arr  main引用到堆和change引用到堆的是想通地址,引用的地址中的数据有变化了。所以打印arr[0]=1,arr[1]=4,arr[2]=3,arr[3]=8,arr[4]=5
        }
    }

    public static void change(int[] arr) {//画的上面栈到堆的数据地址的线
        for (int x = 0; x < arr.length; x++) {
            // 如果元素是偶数，值就变为以前的2倍
            if (arr[x] % 2 == 0) {
                arr[x] *= 2;//当堆内存中的值改变后,所有引用这里地址的引用数据都会对应变化
            }
        }
    }

}
